<h1 id="live2d-widget"><a class="anchor" href="#live2d-widget">#</a> Live2D Widget</h1>
<p><img src="https://forthebadge.com/images/badges/built-with-love.svg" alt="" /><br />
<img src="https://forthebadge.com/images/badges/uses-html.svg" alt="" /><br />
<img src="https://forthebadge.com/images/badges/made-with-javascript.svg" alt="" /><br />
<img src="https://forthebadge.com/images/badges/contains-cat-gifs.svg" alt="" /><br />
<img src="https://forthebadge.com/images/badges/powered-by-electricity.svg" alt="" /><br />
<img src="https://forthebadge.com/images/badges/makes-people-smile.svg" alt="" /></p>
<h2 id="特性-feature"><a class="anchor" href="#特性-feature">#</a> 特性 Feature</h2>
<p>在网页中添加 Live2D 看板娘。兼容 PJAX，支持无刷新加载。<br />
Add Live2D widget to web page. Compatible with PJAX.</p>
<p><strong>警告：本项目使用了大量 ES6 语法，不支持 IE 11 等老旧浏览器。</strong><br />
<strong>WARNING: This project does not support legacy browsers such as IE 11.</strong></p>
<h2 id="示例-demo"><a class="anchor" href="#示例-demo">#</a> 示例 Demo</h2>
<p>在<a href="https://zhangshuqiao.org">米米的博客</a>的左下角可查看效果。（注：以下人物模型仅供展示之用，本仓库并不包含任何模型。）</p>
<p>&lt;img src=&quot;assets/screenshot-2.png&quot; width=&quot;280&quot;&gt;&lt;img src=&quot;assets/screenshot-3.png&quot; width=&quot;280&quot;&gt;&lt;img src=&quot;assets/screenshot-1.png&quot; width=&quot;270&quot;&gt;</p>
<p>你也可以在允许的范围内进行二次开发，这里有一些示例</p>
<ul>
<li><a href="https://mi.js.org/live2d-widget/demo/demo.html">demo.html</a> ，展现基础效果</li>
<li><a href="https://mi.js.org/live2d-widget/demo/login.html">login.html</a> ，仿 NPM 的登陆界面</li>
</ul>
<h2 id="依赖-dependencies"><a class="anchor" href="#依赖-dependencies">#</a> 依赖 Dependencies</h2>
<p>本插件需要 Font Awesome (v4 或 v5) 图标支持，请确保相关样式表已在页面中加载。以 Font Awesome v4 为例，请在  <code>&lt;head&gt;</code>  中加入：<br />
Font Awesome (v4 or v5) is required for this plugin. Take Font Awesome v4 as an example, please add the following in  <code>&lt;head&gt;</code> :</p>
<figure class="highlight xml"><figcaption data-lang="XML"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>link</span> <span class="token attr-name">rel</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>stylesheet<span class="token punctuation">"</span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>https://cdn.jsdelivr.net/npm/font-awesome/css/font-awesome.min.css<span class="token punctuation">"</span></span><span class="token punctuation">></span></span></pre></td></tr></table></figure><p>否则图标将无法正常显示。（如果网页中已经加载了任何版本的 Font Awesome，就不要重复加载了）</p>
<h2 id="使用-usage"><a class="anchor" href="#使用-usage">#</a> 使用 Usage</h2>
<p>将这一行代码加入  <code>&lt;head&gt;</code>  或  <code>&lt;body&gt;</code> ，即可展现出效果：</p>
<figure class="highlight xml"><figcaption data-lang="XML"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>https://cdn.jsdelivr.net/gh/stevenjoezhang/live2d-widget@latest/autoload.js<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">></span></span></pre></td></tr></table></figure><p>如果网站启用了 PJAX，由于看板娘不必每页刷新，因此要注意将相关脚本放到 PJAX 刷新区域之外。</p>
<p>换句话说，如果你是小白，或者只需要最基础的功能，就只用把这一行代码，连同前面加载 Font Awesome 的一行代码，一起放到 html 的  <code>&lt;head&gt;</code>  中即可。<br />
对于用各种模版引擎（例如 Nunjucks，Jinja 或者 PHP）生成的页面，也要自行修改，方法类似，只是可能略为麻烦。以 <a href="https://hexo.io">Hexo</a> 为例，需要在主题相关的 ejs 或 njk 模版中正确配置路径，才可以加载。</p>
<p><strong>但是！我们强烈推荐自己进行配置，否则很多功能是不完整的，并且可能产生问题！</strong><br />
如果你有兴趣自己折腾的话，请看下面的详细说明。</p>
<h3 id="using-cdn"><a class="anchor" href="#using-cdn">#</a> Using CDN</h3>
<p>要自定义有关内容，可以把这个仓库 Fork 一份，然后进行修改。这时，使用方法对应地变为</p>
<figure class="highlight xml"><figcaption data-lang="XML"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>https://cdn.jsdelivr.net/gh/username/live2d-widget@latest/autoload.js<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">></span></span></pre></td></tr></table></figure><p>将此处的  <code>username</code>  替换为你的 GitHub 用户名。为了使 CDN 的内容正常刷新，需要创建新的 git tag 并推送至 GitHub 仓库中，否则此处的  <code>@latest</code>  仍然指向更新前的文件。此外 CDN 本身存在缓存，因此改动可能需要一定的时间生效。相关文档：</p>
<ul>
<li><a href="https://git-scm.com/book/en/v2/Git-Basics-Tagging">Git Basics - Tagging</a></li>
<li><a href="https://help.github.com/en/github/administering-a-repository/managing-releases-in-a-repository">Managing releases in a repository</a></li>
</ul>
<h3 id="self-host"><a class="anchor" href="#self-host">#</a> Self-host</h3>
<p>你也可以直接把这些文件放到服务器上，而不是通过 CDN 加载。</p>
<ul>
<li>如果你能够通过  <code>ssh</code>  访问你的主机，请把整个仓库克隆到服务器上。执行：<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token builtin class-name">cd</span> /path/to/your/webroot</pre></td></tr><tr><td data-num="2"></td><td><pre><span class="token comment"># Clone this repository</span></pre></td></tr><tr><td data-num="3"></td><td><pre><span class="token function">git</span> clone https://github.com/stevenjoezhang/live2d-widget.git</pre></td></tr></table></figure></li>
<li>如果你的主机无法用  <code>ssh</code>  连接（例如一般的虚拟主机），请选择  <code>Download ZIP</code> ，然后通过  <code>ftp</code>  等方式上传到主机上，再解压到网站的目录下。</li>
<li>如果你是通过 Hexo 等工具部署的静态博客，请在博客源文件（即  <code>source</code> ）目录下，执行前述的  <code>git clone</code>  命令。重新部署博客时，相关文件就会自动上传到对应的路径下。为了避免这些文件被 Hexo 插件错误地修改，可能需要设置  <code>skip_render</code> 。</li>
</ul>
<p>这样，整个项目就可以通过你的服务器 IP 或者域名从公网访问了。不妨试试能否正常地通过浏览器打开  <code>autoload.js</code>  和  <code>live2d.min.js</code>  等文件，并确认这些文件的内容是完整和正确的。<br />
一切正常的话，接下来修改一些配置就行了。（需要通过服务器上的文本编辑器修改；你也可以先在本地完成这一步骤，再上传到服务器上）<br />
修改  <code>autoload.js</code>  中的常量  <code>live2d_path</code>  为  <code>live2d-widget</code>  这一目录的 URL。比如说，如果你能够通过</p>
<pre><code>https://example.com/path/to/live2d-widget/live2d.min.js
</code></pre>
<p>访问到  <code>live2d.min.js</code> ，那么就把  <code>live2d_path</code>  的值修改为</p>
<pre><code>https://example.com/path/to/live2d-widget/
</code></pre>
<p>路径末尾的  <code>/</code>  一定要加上。具体可以参考  <code>autoload.js</code>  内的注释。<br />
完成后，在你要添加看板娘的界面加入</p>
<figure class="highlight xml"><figcaption data-lang="XML"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>https://example.com/path/to/live2d-widget/autoload.js<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">></span></span></pre></td></tr></table></figure><p>就可以加载了。</p>
<h2 id="后端-api"><a class="anchor" href="#后端-api">#</a> 后端 API</h2>
<p><code>initWidget</code>  方法接受名为  <code>apiPath</code>  和  <code>cdnPath</code>  的参数，两者设置其中一项即可。其中  <code>apiPath</code>  为后端 API 的 URL，可以自行搭建，并增加模型（需要修改的内容比较多，此处不再赘述）。而  <code>cdnPath</code>  则是通过 jsDelivr 这样的 CDN 服务加载资源，更加稳定。</p>
<h2 id="目录结构-files"><a class="anchor" href="#目录结构-files">#</a> 目录结构 Files</h2>
<ul>
<li><code>waifu-tips.js</code>  包含了按钮和对话框的逻辑；</li>
<li><code>waifu-tips.json</code>  中定义了触发条件（ <code>selector</code> ，CSS 选择器）和触发时显示的文字（ <code>text</code> ）；</li>
<li><code>waifu.css</code>  是看板娘的样式表。</li>
</ul>
<p>源文件是对 Hexo 的 <a href="http://github.com/next-theme/hexo-theme-next">NexT 主题</a>有效的，为了适用于你自己的网页，可能需要自行修改，或增加新内容。<br />
<strong>警告：作者不对包括但不限于  <code>waifu-tips.js</code>  和  <code>waifu-tips.json</code>  文件中的内容负责，请自行确保它们是合适的。</strong></p>
<p>如果有任何疑问，欢迎提 Issue。如果有任何修改建议，欢迎提 Pull Request。</p>
<h2 id="鸣谢-thanks"><a class="anchor" href="#鸣谢-thanks">#</a> 鸣谢 Thanks</h2>
<p>&lt;a href=&quot;<a href="https://www.browserstack.com/">https://www.browserstack.com/</a>&quot;&gt;&lt;img height=&quot;80&quot; src=&quot;<a href="https://live.browserstack.com/images/opensource/browserstack-logo.svg">https://live.browserstack.com/images/opensource/browserstack-logo.svg</a>&quot; alt=&quot;BrowserStack Logo&quot;&gt;&lt;/a&gt;</p>
<blockquote>
<p>感谢 BrowserStack 容许我们在真实的浏览器中测试此项目。<br />
Thanks to <a href="https://www.browserstack.com/">BrowserStack</a> for providing the infrastructure that allows us to test in real browsers!</p>
</blockquote>
<p>&lt;a href=&quot;<a href="https://www.jsdelivr.com">https://www.jsdelivr.com</a>&quot;&gt;&lt;img height=&quot;80&quot; src=&quot;<a href="https://raw.githubusercontent.com/jsdelivr/jsdelivr-media/master/default/svg/jsdelivr-logo-horizontal.svg">https://raw.githubusercontent.com/jsdelivr/jsdelivr-media/master/default/svg/jsdelivr-logo-horizontal.svg</a>&quot;&gt;&lt;/a&gt;</p>
<blockquote>
<p>感谢 jsDelivr 提供的 CDN 服务。<br />
Thanks jsDelivr for providing public CDN service.</p>
</blockquote>
<p>代码自这篇博文魔改而来：<br />
<a href="https://www.fghrsh.net/post/123.html">https://www.fghrsh.net/post/123.html</a></p>
<p>点击看板娘的纸飞机按钮时，会出现一个彩蛋，这来自于 <a href="http://www.websiteasteroids.com">WebsiteAsteroids</a>。</p>
<h2 id="更多-more"><a class="anchor" href="#更多-more">#</a> 更多 More</h2>
<p>更多内容可以参考：<br />
<a href="https://imjad.cn/archives/lab/add-dynamic-poster-girl-with-live2d-to-your-blog-02">https://imjad.cn/archives/lab/add-dynamic-poster-girl-with-live2d-to-your-blog-02</a><br />
<a href="https://github.com/xiazeyu/live2d-widget.js">https://github.com/xiazeyu/live2d-widget.js</a><br />
<a href="https://github.com/summerscar/live2dDemo">https://github.com/summerscar/live2dDemo</a></p>
<p>关于后端 API 模型：<br />
<a href="https://github.com/fghrsh/live2d_api">https://github.com/fghrsh/live2d_api</a><br />
<a href="https://github.com/xiazeyu/live2d-widget-models">https://github.com/xiazeyu/live2d-widget-models</a><br />
<a href="https://github.com/xiaoski/live2d_models_collection">https://github.com/xiaoski/live2d_models_collection</a></p>
<p>除此之外，还有桌面版本：<br />
<a href="https://github.com/amorist/platelet">https://github.com/amorist/platelet</a><br />
<a href="https://github.com/akiroz/Live2D-Widget">https://github.com/akiroz/Live2D-Widget</a><br />
<a href="https://github.com/zenghongtu/PPet">https://github.com/zenghongtu/PPet</a><br />
<a href="https://github.com/LikeNeko/L2dPetForMac">https://github.com/LikeNeko/L2dPetForMac</a></p>
<p>以及 Wallpaper Engine：<br />
<a href="https://github.com/guansss/nep-live2d">https://github.com/guansss/nep-live2d</a></p>
<h2 id="许可证-license"><a class="anchor" href="#许可证-license">#</a> 许可证 License</h2>
<p>Released under the GNU General Public License v3<br />
<a href="http://www.gnu.org/licenses/gpl-3.0.html">http://www.gnu.org/licenses/gpl-3.0.html</a></p>
<p>本仓库并不包含任何模型，用作展示的所有 Live2D 模型、图片、动作数据等版权均属于其原作者，仅供研究学习，不得用于商业用途。</p>
<p>Live2D 官方网站：<br />
<a href="https://www.live2d.com/en/">https://www.live2d.com/en/</a><br />
<a href="https://live2d.github.io">https://live2d.github.io</a></p>
<p>Live2D Cubism Core は Live2D Proprietary Software License で提供しています。<br />
<a href="https://www.live2d.com/eula/live2d-proprietary-software-license-agreement_en.html">https://www.live2d.com/eula/live2d-proprietary-software-license-agreement_en.html</a><br />
Live2D Cubism Components は Live2D Open Software License で提供しています。<br />
<a href="http://www.live2d.com/eula/live2d-open-software-license-agreement_en.html">http://www.live2d.com/eula/live2d-open-software-license-agreement_en.html</a></p>
<blockquote>
<p>The terms and conditions do prohibit modification, but obfuscating in  <code>live2d.min.js</code>  would not be considered illegal modification.</p>
</blockquote>
<p><a href="https://community.live2d.com/discussion/140/webgl-developer-licence-and-javascript-question">https://community.live2d.com/discussion/140/webgl-developer-licence-and-javascript-question</a></p>
<h2 id="更新-update"><a class="anchor" href="#更新-update">#</a> 更新 Update</h2>
<p>2018 年 10 月 31 日，由 fghrsh 提供的原 API 停用，请更新至新地址。参考文章：<br />
<a href="https://www.fghrsh.net/post/170.html">https://www.fghrsh.net/post/170.html</a></p>
<p>2020 年 1 月 1 日起，本项目不再依赖于 jQuery。</p>
